#ifndef __PCPT_COMM_POLYGON_H__
#define __PCPT_COMM_POLYGON_H__

#include "comm/comm_base.h"
#include "comm/comm_geometry.h"
#include "pcpt_comm/pcpt_comm_iou.h"

using namespace std;

/**************************************************************************************
功能描述: 任意多边形
修改记录:
**************************************************************************************/
class ANY_POLYGON_EX_C
{
public:
    ANY_POLYGON_EX_C()
    {
    }

    ~ANY_POLYGON_EX_C(){}

    BOOL IsPointIn(const COORDINATE_2D_STRU &stPoint, const COORDINATE_2D_STRU astPoint[], int pointNum);
    BOOL IsPointIn(const COORDINATE_2D_STRU &stPoint, const vector<COORDINATE_2D_STRU> &vstPoint);
    
    double PolygonArea(const COORDINATE_2D_STRU astPoint[], int pointNum);
    double PolygonArea(const vector<COORDINATE_2D_STRU> &vstPoint);

    float IoUOfPolygon(const vector<COORDINATE_2D_STRU> &vstPointA,
                       const vector<COORDINATE_2D_STRU> &vstPointB);

private:
    ANY_POLYGON_C   objAnyPolygon_;
    IOU_C           objIoU_;
};

#endif

